package com.ljdemo.lrecorder.utils;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import androidx.core.content.FileProvider;

import java.io.File;

/**
 * 分享文件
 * 需要配置 FileProvider
 * <br/>
 * 创建日期 : 2023/6/9
 * 修改日期 : 2023/6/27
 * */
public class ShareFileUtil {
    private static final String TAG="文件分享";

//常见文件类型：
//    {".3gp", "video/3gpp"},
//    {".apk", "application/vnd.android.package-archive"},
//    {".asf", "video/x-ms-asf"},
//    {".avi", "video/x-msvideo"},
//    {".bin", "application/octet-stream"},
//    {".bmp", "image/bmp"},
//    {".c", "text/plain"},
//    {".class", "application/octet-stream"},
//    {".conf", "text/plain"},
//    {".cpp", "text/plain"},
//    {".doc", "application/msword"},
//    {".exe", "application/octet-stream"},
//    {".gif", "image/gif"},
//    {".gtar", "application/x-gtar"},
//    {".gz", "application/x-gzip"},
//    {".h", "text/plain"},
//    {".htm", "text/html"},
//    {".html", "text/html"},
//    {".jar", "application/java-archive"},
//    {".java", "text/plain"},
//    {".jpeg", "image/jpeg"},
//    {".jpg", "image/jpeg"},
//    {".js", "application/x-javascript"},
//    {".log", "text/plain"},
//    {".m3u", "audio/x-mpegurl"},
//    {".m4a", "audio/mp4a-latm"},
//    {".m4b", "audio/mp4a-latm"},
//    {".m4p", "audio/mp4a-latm"},
//    {".m4u", "video/vnd.mpegurl"},
//    {".m4v", "video/x-m4v"},
//    {".mov", "video/quicktime"},
//    {".mp2", "audio/x-mpeg"},
//    {".mp3", "audio/x-mpeg"},
//    {".mp4", "video/mp4"},
//    {".mpc", "application/vnd.mpohun.certificate"},
//    {".mpe", "video/mpeg"},
//    {".mpeg", "video/mpeg"},
//    {".mpg", "video/mpeg"},
//    {".mpg4", "video/mp4"},
//    {".mpga", "audio/mpeg"},
//    {".msg", "application/vnd.ms-outlook"},
//    {".ogg", "audio/ogg"},
//    {".pdf", "application/pdf"},
//    {".png", "image/png"},
//    {".pps", "application/vnd.ms-powerpoint"},
//    {".ppt", "application/vnd.ms-powerpoint"},
//    {".prop", "text/plain"},
//    {".rar", "application/x-rar-compressed"},
//    {".rc", "text/plain"},
//    {".rmvb", "audio/x-pn-realaudio"},
//    {".rtf", "application/rtf"},
//    {".sh", "text/plain"},
//    {".tar", "application/x-tar"},
//    {".tgz", "application/x-compressed"},
//    {".txt", "text/plain"},
//    {".wav", "audio/x-wav"},
//    {".wma", "audio/x-ms-wma"},
//    {".wmv", "audio/x-ms-wmv"},
//    {".wps", "application/vnd.ms-works"},
//    //{".xml", "text/xml"},
//    {".xml", "text/plain"},
//    {".z", "application/x-compress"},
//    {".zip", "application/zip"},
//    {"", "*/*"}

    /**
     * 调用系统分享，分享文件
     * <br/>
     * 需要配置FileProvider，方法内部授权参数（authorities）为fileprovider
     * @param filePath 文件路径
     * @param type 分享文件类型
     * */
    public static void shareFile(Context context,String filePath,String type){
        // 调用系统分享
        Intent intent=new Intent();
        intent.setAction(Intent.ACTION_SEND);

        // 从文件对象获取的Uri才能显示文件名
        File file=new File(filePath);
        // android7.0以后，分享文件被限制，需要配置 FileProvider，使用 FileProvider 获取分享文件才能分享
        Uri uri= FileProvider.getUriForFile(context,
                context.getApplicationContext().getPackageName()+".fileprovider",file);
        intent.putExtra(Intent.EXTRA_STREAM, uri);

        intent.setType(type);
        // android7.0 后分享文件需要授予读文件权限
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        // 启动系统分享
        context.startActivity(Intent.createChooser(intent,"分享l"));
    }

    /**
     * 分享MP4文件
     * <br/>
     * 需要配置FileProvider，方法内部授权参数（authorities）为fileprovider
     * */
    public static void shareVideo(Context context,String filePath){
        shareFile(context,filePath,"video/mp4");
    }

    /**
     * 调用系统分享，分享文件
     * <br/>
     * 需要配置FileProvider
     * @param filePath 文件路径
     * @param type 分享文件类型
     * @param authority 配置的FileProvider的authority
     * */
    public static void shareFile(Context context,String filePath,String type,String authority){
        // 调用系统分享
        Intent intent=new Intent();
        intent.setAction(Intent.ACTION_SEND);

        // 从文件对象获取的Uri才能显示文件名
        File file=new File(filePath);
        // android7.0以后，分享文件被限制，需要配置 FileProvider，使用 FileProvider 获取分享文件才能分享
        Uri uri= FileProvider.getUriForFile(context,
                context.getApplicationContext().getPackageName()+"."+authority,file);
        intent.putExtra(Intent.EXTRA_STREAM, uri);

        intent.setType(type);
        // android7.0 后分享文件需要授予读文件权限
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        // 启动系统分享
        context.startActivity(Intent.createChooser(intent,"分享l"));
    }

    /**
     * 分享MP4文件
     * <br/>
     * 需要配置FileProvider
     * @param authority 配置的FileProvider的authority
     * */
    public static void shareVideo(Context context,String filePath,String authority){
        shareFile(context,filePath,"video/mp4",authority);
    }

}
